package com.cskaoyan.javase.oop1._13block._1building._0introduction;

/**
 * 构造代码块
 * 语法:
 * {}
 * 定义位置: 类体中,局部位置之外的位置,也就是成员位置
 *
 * 作用:
 *      随着构造器的执行而执行，用于在创建对象过程当中，给成员变量赋值！
 *      类中的构造器只要被执行,那么构造代码块一定也会执行.
 *
 * 总结一下,目前为止,在创建对象过程中,给成员变量赋值的手段:
 *      1.默认初始化,具有默认值
 *      2.显式赋值
 *      3.构造器赋值
 *      4.构造代码块赋值
 *
 * 以上赋值顺序,要遵循"掐头去尾",默认初始化最先进行,构造器赋值最后执行
 * 实测代码发现:
 *      显式赋值和构造代码块赋值(构造代码块中的代码),按照代码的书写顺序从上往下执行
 *
 * @since 14:47
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        BigStudent bs = new BigStudent();
        System.out.println(bs.age);
    }
}

class BigStudent {
    // 构造代码块赋值
    {
        age = 18;
    }

    // 显式赋值
    int age = 28;

}